home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
021-030
/
amok23
/
noguru
/
noguru.dok
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
42 lines
:Program. NoGuru
:Author. Volker Rudolph
:Address. Medicusstr. 31 / 6750 Kaiserslautern
:Phone. 0631/17160
:ShortCut. [vor]
:Support. Bernd Preusing (DisObject)
:Version. 1.2
:Date. 31.7.1989
:Copyright. PD
:Language. Assembler / Modula-2
:Translator. Asm68k(PD) / M2Amiga 3.2d
:Imports. nichts !!!
:Contents. Das Modul NoGuru fängt alle Gurus ab und beendet das
Programm sauber (Arts.Error).
:Remark. Dieses Modul sollte nicht neu kompiliert werden, da sonst
die Modul-ID im OBJ-File nicht mehr stimmt.
:Usage. Nur importieren (IMPORT NoGuru;)
Das M2Amiga-Laufzeitsystem fängt viele Fehler wie 'Division durch
Null' oder Addressfehler ab. Leider gibt es auch noch andere Gurus,
nähmlich solche, die vom Betriebssystem verursacht werden. Beliebte
Gurus sind z.B. Fehler in der Speicherverwaltung wie
'Memory-freed-twice' (= 81000009). NoGuru bewältigt jetzt auch solche
Fehler. Die Gurunummer wird ausgegeben, das Programm wird
ordnungsgemäß abgebrochen und die TermProcedures werden ausgeführt.
Wie geht das ?
NoGuru verändert den Sprungvektor von Exec.Alert, über den alle Guru-
Meditations ausgegeben werden. Dieser Vektor wird auf eine eigene
Routine gerichtet, die, anstatt eine Guru-Meditation zu verursachen,
nur das Programm abbricht. Dieser Alert-Vektor gilt aber nicht nur für
den eigenen Task, sondern auch für alle anderen die gerade laufen.
Wenn nun einer von diesen Tasks abstürzen (oder mit einem
Recoverable-Alert eine Fehlermeldung ausgeben) würde, würde auch in
die NoGuru-Routine gesprungen. Um das zu vermeiden wird die
NoGuru-Routine erst installiert, wenn der eigene Task Rechenzeit
bekommt, und wenn die Rechenzeit beendet ist, wird die ursprüngliche
Routine wieder eingesetzt. Durch diese Methode läuft NoGuru auch ohne
Schwierigkeiten mit anderen Error-Handlern (z.B. Gomf) zusammen.